package com.chen.util;

import cn.hutool.core.util.ZipUtil;

import java.io.File;
import java.util.concurrent.ExecutionException;
import java.util.concurrent.ExecutorService;
import java.util.concurrent.Executors;

public class Test {
    public static ExecutorService es = Executors.newFixedThreadPool(10);

    public static void main(String[] args) throws ExecutionException, InterruptedException {
        File zip = ZipUtil.zip("D:\\test\\源文件", "D:\\test\\源文件.zip", false);
        System.out.println(zip.getName());
        //测试方法1
        System.out.println("压缩完成");
        //这里开始
//        File unzip = ZipUtil.unzip("D:\\test\\源文件.zip", "D:\\test\\目标位置");
//        System.out.println(unzip.getName());
//        System.out.println("解压完成");
//        String path = "D:\\test\\目标位置";
//        File file = new File(path);
//        if (file.isDirectory()) {//否则如果它是一个目录
//            File[] files = file.listFiles();//声明目录下所有的文件 files[];
//            Optional.ofNullable(files).ifPresent(fs -> {
//                for (File f : fs) {
//                    try {
//                        es.submit(() -> {
//                            if (f.isDirectory()) {
//                                System.out.println(Thread.currentThread().getName());
//                                ZipUtil.zip(f);
//                                FileUtil.clean(f);
//                                f.delete();
//                            }
//                        }).get();
//                    } catch (InterruptedException e) {
//                        throw new RuntimeException(e);
//                    } catch (ExecutionException e) {
//                        throw new RuntimeException(e);
//                    }
//                }
//            });
//        }
//        System.out.println("压缩子项完成");
//        System.out.println("删除目录完成");
//        es.shutdown();

//        CompletableFuture.supplyAsync(() -> {
//            File unzip = ZipUtil.unzip("D:\\test\\源文件.zip", "D:\\test\\目标位置");
//            System.out.println(unzip.getName());
//            System.out.println("解压完成");
//            String path = "D:\\test\\目标位置";
//            return new File(path);
//        }).thenAcceptAsync(file -> {
//            if (file.isDirectory()) {//否则如果它是一个目录
//                File[] files = file.listFiles();//声明目录下所有的文件 files[];
//                Optional.ofNullable(files).ifPresent(fs -> {
//                    for (File f : fs) {
//                        if (f.isDirectory()) {
//                            System.out.println(Thread.currentThread().getName());
//                            //压缩目录
//                            ZipUtil.zip(f);
//                            //清除目录子项
//                            FileUtil.clean(f);
//                            //删除目录
//                            f.delete();
//                        }
//                    }
//                });
//            }
//            System.out.println("压缩子项完成");
//            System.out.println("删除目录完成");
//        }).get();
        String path = "D:\\jysp\\uploadPath\\test-product\\test-type\\jmeter-5.5-rc1";
        File file = new File(path);
        System.out.println(file.getPath());
        System.out.println(file.getAbsolutePath());
        System.out.println("完成");
    }

    // 递归遍历
    private static void traversalFile(File file) {
        File[] flist = file.listFiles();
        if (flist == null) {
            return;
        }
        for (File f : flist) {
            if (f.isDirectory()) {
                //这里将列出所有的文件夹
                System.out.println("Dir==>" + f.getAbsolutePath());
                traversalFile(f);
            } else {
                //这里将列出所有的文件
                System.out.println("file==>" + f.getAbsolutePath());
            }
        }
    }

    protected void aa() {
        System.out.println("aaaa");
    }
}
